home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 6 / clmfeb85.zip / CASM.2 < prev    next >
Text File  |  1988-07-25  |  3KB  |  104 lines

  1.  
  2.  
  3.  
  4.                             Listing 2
  5.                     C to Assembler Interface
  6.  
  7. main()
  8. {
  9.  int retvals [4] ;
  10.  int index ;
  11.   SET_MODE ;
  12.   hline(0,0,219,80) ;   /* draw box around screen */
  13.   hline(24,0,219,80) ;    /* i.e., manual window using nonwindow characters */ 
  14.   verline(0,0,219,24) ;
  15.   verline(0,79,219,24) ;
  16.   window(3,3,6,5) ;
  17.   window(10,10,5,6) ;
  18.   window(7,17,10,11) ;
  19.   window(15,40,10,6) ;
  20.   window(5,50,20,16) ;
  21.       /* read c#define PAGE 0
  22.  /* video modes */
  23. #define s40x25_bw 0
  24. #define s40x25_color 1
  25. #define s80x25_bw 2
  26. #define s80x25_color 3
  27. #define med_color 4
  28. #define med_bw 5
  29. #define high_bw 6
  30.  /* video functions */
  31. #define set_type 256
  32. #define set_cur 512
  33. #define read_position 768
  34. #define read_light_pen_position 1024
  35. #define select_page 1280
  36. #define scroll_up 1536
  37. #define scroll_dn 1792
  38. #define read_attribute_char 2048
  39. #define write_attribute_char 2304
  40. #define write_char 2560
  41. #define set_palette 2816
  42. #define write_dot 3072
  43. #define read_dot 3328
  44. #define write_teletype 3584
  45. #define get_state 3840
  46.  /* macros */
  47. #define curpos(row,col) dspio(set_cur,PAGE,0,(((int)row)<<8)+col)
  48. #define SET_MODE dspio(s80x25_bw)
  49. #define horline(ch,width) dspio(write_char+ch,PAGE,width) 
  50. #define hline(row,col,ch,width) curpos(row,col) ; horline(ch,width)
  51. #define wrtchar(ch) dspio(write_char+ch,PAGE,1)
  52.  
  53. main()
  54. {
  55.  int retvals [4] ;è int index ;
  56.   SET_MODE ;
  57.   hline(0,0,219,80) ;   /* draw box around screen */
  58.   hline(24,0,219,80) ;    /* i.e., manual window using nonwindow characters */ 
  59.   verline(0,0,219,24) ;
  60.   verline(0,79,219,24) ;
  61.   window(3,3,6,5) ;
  62.   window(10,10,5,6) ;
  63.   window(7,17,10,11) ;
  64.   window(15,40,10,6) ;
  65.   window(5,50,20,16) ;
  66.       /* read cursor position */
  67.   for (index=0; index <4; index++ ) {
  68.     curpos(index,index+1) ;
  69.     dspio(read_position,PAGE,0,0,retvals) ;
  70.     printf("For page PAGE, Row:%u, Col:%u, cursor mode=%o,%o \n",
  71.       retvals[3]>>8, (retvals[3]<<8)>>8, retvals[2]>>8,(retvals[2]<<8)>>8) ; 
  72.   }
  73.      /* get current video state */
  74.   dspio(get_state,PAGE,0,0,retvals) ;
  75.   printf("Mode: %u, Columns: %u, Active Page: %u \n",
  76.      (retvals[0]<<8)>>8, retvals[0]>>8, retvals[1]>>8 ) ;
  77. }
  78. window(row,col,width,depth) /* start at row,col, i.e. left upper corner */
  79. char row,col ;
  80. {
  81.      /* first do 4 corners */
  82.   curpos(row,col) ;
  83.   wrtchar(214) ;
  84.   curpos(row+depth,col) ;
  85.   wrtchar(211) ; 
  86.   curpos(row,col+width-1) ;
  87.   wrtchar(183) ;
  88.   curpos(row+depth,col+width-1) ;
  89.   wrtchar(189) ;
  90.      /* then connect corners with horizontal and vertical lines */
  91.   hline(row,col+1,196,width-2) ;
  92.   hline(row+depth,col+1,196,width-2) ;
  93.   verline(row+1,col,186,depth-1) ;
  94.   verline(row+1,col+width-1,186,depth-1) ;
  95. }
  96. verline(row,col,ch,len)
  97. char row, col, ch, len ;
  98. {
  99.   char cnt ;
  100.      for (cnt=len; cnt > 0; cnt--) {
  101.     curpos(row++,col) ;
  102.     wrtchar(ch) ;
  103.      }
  104. }